import com.beans.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class APP {
    public static void main(String[] args) {
        // 1.获取上下文
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");

        // 2.根据上下文提供的方法 获取对应bean
        UserController userController = context.getBean("userController",UserController.class);
        UserService userService = context.getBean("userService", UserService.class);
        UserRepository userRepository = context.getBean("userRepository",UserRepository.class);
        UserConfiguration userConfiguration = context.getBean("userConfiguration", UserConfiguration.class);
        UserComponent userComponent = context.getBean("userComponent", UserComponent.class);

        // 为什么bean id要使用小驼峰
        // APIController可以成功 而使用aPIController首字母小写就报错
        // 为什么呢 我们可以看spring源码 就是@Controller里面
        // 我们要知道 APIController是存到spring中的 通过Controller实现
        // 我们使用全局搜索(右上角搜索符号 搜索beanName 找到 AnnotationBeanNameGenerator)
        APIController apiController = context.getBean("APIController", APIController.class);


        // 3.调用bean里的方法
        userController.sayHi();
        userService.sayHi();
        userRepository.sayHi();
        userConfiguration.sayHi();
        userComponent.sayHi();
        apiController.sayHi();
    }
}
